nginx部署react docker 您所在的位置:网站首页 nginx docker-compose nginx部署react docker

nginx部署react docker

2023-02-27 20:35| 来源: 网络整理| 查看: 265

不说原理只说怎么做。

前端react:    

1: 安装nginx           

2: 改写 /etc/nginx/sites-enabled/default 如下:

    

server { listen 80 default_server; listen [::]:80 default_server; server_name www.xxxx.com; root /home/aaa/bbb/ccc/build; //生成的压缩文件的地址 index index.html index.htm; # Add index.php to the list if you are using PHP location / { // 这句话要加 因为使用了react-router try_files $uri $uri/ /index.html; } }

     此时访问 www.xxxx.com 就能看到前端了

后端: express + mongodb

Dockerfile, index.js, .env, docker-compose.yml 均在同一目录下。

// .env 这个文件时环境变量配置的文件

DB_HOST=localhostDB_USER=rootDB_PASSWORD=123456DB_NAME=todoDB_PORT=27017PORT=3001SALT_ROUNDS = 10TOKEN_KEY = era231fj287ij2331u3409t34t3gj3

MONGODB_USER=user_aMONGODB_PASSWORD=666666MONGODB_DATABASE=todoMONGODB_LOCAL_PORT=7017MONGODB_DOCKER_PORT=27017

NODE_LOCAL_PORT=6868NODE_DOCKER_PORT=8080

  

// db.js 这个文件是后端Express项目使用mongoose链接数据库的文件

'use strict';

const mongoose = require('mongoose')const config = require('../../utils/config')const { DB_HOST,   MONGODB_PASSWORD,   MONGODB_USER,   DB_PORT,   MONGODB_DATABASE,} = process.env;const URL = `mongodb://${MONGODB_USER}:${MONGODB_PASSWORD}@${DB_HOST}:${DB_PORT}/${MONGODB_DATABASE}`// mongodb://todo_admin:[email protected]:27017/todoconsole.log('=======', URL)

mongoose.connect(URL);

const db = mongoose.connection;

db.once('open' ,() => {   console.info('连接数据库成功');})

db.on('error', function(error) {   console.error('数据库连接失败: ' + error);   mongoose.disconnect();});

db.on('close', function () {   console.log(URL)   console.error('数据库断开,重新连接数据库');   mongoose.connect(URL, {server:{auto_reconnect:true}});});

module.exports = db

// Dockerfile

FROM node:16.0.0COPY . /appWORKDIR /appRUN ["npm", "install"]EXPOSE 3000

// docker-compose.yml 缩紧拷贝过来可能有问题。

version: '3'

services:   mongodb:     image: mongo:5.0.7     restart: unless-stopped     env_file: ./.env     container_name: mongodb     ports:       - $MONGODB_LOCAL_PORT:$MONGODB_DOCKER_PORT     volumes:       - ./data:/data/db     environment:       - MONGO_INITDB_ROOT_USERNAME=$DB_USER       - MONGO_INITDB_ROOT_PASSWORD=$DB_PASSWORD

  web:     depends_on:       - mongodb     build: .     command: node index.js     env_file: ./.env     volumes:       - .:/app       - /app/node_modules     ports:       - $PORT:$PORT     environment:       - DB_HOST=mongodb       - DB_USER=$MONGODB_USER       - DB_PASSWORD=$MONGODB_PASSWORD       - DB_NAME=$MONGODB_DATABASE       - DB_PORT=$MONGODB_DOCKER_PORT     stdin_open: true     tty: true

 

然后执行命令: docker-compose up。

这个时候会发现后端连接不到数据库,是因为咱们的后端要链接的数据库没有创建呢 用户也没有创建。

创建mongodb用户 docker exec -it mongodb /bin/bash 进入mongodb容器的shell

mongo mongodb://localhost:27017 -u root -p 123456    root 和 123456是 DB_USER 和 DB_PASSWORD然后在mongodb的shell里面执行: 

                               use todo               db.createUser(                  {                    user: "user_a",                    pwd: "123456",                    roles: [{role: "dbOwner", db: "todo"} ]                  }               )               就是环境变量设置的这三个字段: MONGODB_USER=user_a   MONGODB_PASSWORD=666666    MONGODB_DATABASE=todo                 


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有